<?php
/*
	### 缩放图片
	参一：图片资源名
	参二：要缩放的高度，默认200px
	参三：要缩放的宽度，默认300px
	返回：缩放成功会返回 jpg格式的文件名
	示例：
		$new_name = ScaleImg($_FILES['banner']["tmp_name"]);
*/
function ScaleImg($imgs,$nw=200,$nh=300){
	if(!is_array($imgs)){
		exit('err11');
	}
	$ext = pathinfo($imgs['name'],PATHINFO_EXTENSION);
	switch($ext){
		case 'jpg':case 'JPG':case 'jpeg':case 'JPEG':
			$oimg=imagecreatefromjpeg($imgs['tmp_name']);	//引入要绽放的图片
			break;
		case 'png':case 'PNG':
			$oimg=imagecreatefrompng($imgs['tmp_name']);	//引入要绽放的图片
			break;
		case 'gif':case 'GIF':
			$oimg=imagecreatefromgif($imgs['tmp_name']);	//引入要绽放的图片
			break;
	}

	$ow=imagesx($oimg);		//获取要缩放图片的高宽
	$oh=imagesy($oimg);

	$new_name = 'a_'.ceil($imgs['size'] / 1024).'k.jpg';
	if($nw==0 || $nh==0){
		imagejpeg($oimg,$new_name);		//保存图片
	}else{
		if($ow && ($ow <$oh)){			//按公式将预设的宽高进行缩小并得到缩小后的值
			$nw=($nh / $oh) * $ow;
		}else{
			$nh=($nw / $ow) * $oh;
		}
		$nimg=imagecreatetruecolor($nw,$nh);	//创建一个画布，高宽使用缩放后的值，
		imagecopyresampled($nimg,$oimg,0,0,0,0,$nw,$nh,$ow,$oh);	//用函数将图片缩放
		imagejpeg($nimg,$new_name);		//保存图片
		imagedestroy($nimg);			//关闭资源
	}
	imagedestroy($oimg);
	return $new_name;
}






/*
	### upyun创建目录
	参一：upyun服务名及用户密码配置数组
	参二：目录路径 
	示例：
		$config['upyun_bucketname'] = 'shop';
		UpyunCreateDir($config,$path);
*/
function UpyunCreateDir($config,$path){
	require_once('Include/UpYun/vendor/autoload.php');
	$serviceConfig = new \Upyun\Config($config['upyun_bucketname'],$config['upyun_username'],$config['upyun_password']);
	$up = new \Upyun\Upyun($serviceConfig);
	return $up->createDir($path);
}




/*
	### 向upyun写入文件
	参一：upyun服务名及用户密码配置数组
	参二：upyun上的保存的文件路径 
	参三：要写入的内容 
	注意：需要将upyun插件文件放置到require_once目录中
	示例：
		$config['upyun_bucketname'] = 'shop';
		UpyunAddFile($config,$path,'123');
*/
function UpyunAddFile($config,$path,$content){
	require_once('Include/UpYun/vendor/autoload.php');
	$serviceConfig = new \Upyun\Config($config['upyun_bucketname'],$config['upyun_username'],$config['upyun_password']);
	$up = new \Upyun\Upyun($serviceConfig);
	$res = $up->has($path);
	if($res){
		return 'err';
	}else{
		return $up->write($path,$content);
	}
}


/*
	### 删除upyun指定文件或目录
	参一：upyun服务名及用户密码配置数组
	参二：要删除的文件路径 
	参三：是否同步，默认false为同步，true为异步
	注意：需要将upyun插件文件放置到require_once目录中
	示例：
		UpyunDelete($config,$path);
*/
function UpyunDelete($config,$path,$stat=false){
	require_once('Include/UpYun/vendor/autoload.php');
	$serviceConfig = new \Upyun\Config($config['upyun_bucketname'],$config['upyun_username'],$config['upyun_password']);
	$up = new \Upyun\Upyun($serviceConfig);
	if(!is_array($path)){
		$res = $up->has($path);
		if($res){
			$up->delete($path,$stat);
		}
	}else{
		foreach($path as $v){
			$res = $up->has($v);
			if($res){
				$up->delete($v,$stat);
			}
		}		
	}
	return true;
}




//递归删除目录
function rmdirs($p){
	if(is_file($p)){
		unlink($p);
	}else{
		$od = opendir($p);
		while($rd = readdir($od)){
			if($rd == '.' || $rd == '..'){
				continue;
			}
			$p2 = $p.'/'.$rd;
			rmdirs($p2);
		}
		rmdir($p);
		closedir($od);
	}
}




//检测并创建目录
function mkdirs($path){
	if(!is_dir($path)){		//如果缓存目录不存在就创建
		mkdir($path,0755,true);
	}
}


function dump($r,$s=false){
	echo '<pre>';
		var_dump($r);
	echo '</pre>';
	if($s){
		exit;
	}
}